import axios from 'axios'
import NProgress from 'nprogress'  //进度条
import 'nprogress/nprogress.css' //加载
import { Message } from 'element-ui'

NProgress.configure({ showSpinner: false }) //关闭加载小圆圈

const whiteUrl = ['login'] //请求白名单，不需要传递token的
// process.env.VUE_APP_SERVER_URL
const Http = axios.create({
    baseURL: process.env.VUE_APP_SERVER_URL, //设置默认请求接口地址
    timeout: 5000 // 请求超时时间
})

Http.interceptors.request.use( //请求拦截器
    config => {
        NProgress.start(); //开启进度条
        const url = config.url.replace(console.baseURL, '') //把基础url去除，只留后面的
        if (whiteUrl.some(ul => url === ul)) { //包含白名单内，说明不需要传递token，直接返回即可
            return config
        }
        config.headers['Authorization'] = window.sessionStorage.getItem('token') //设置请求拦截器，设置token头
        return config
    },
    err => {
        return Promise.reject(err)
    })

Http.interceptors.response.use(
    config => { //响应拦截器
        NProgress.done(); //关闭进度条
        const meta = config.data.meta
        // window.console.log(process.env)
        if (meta.status !== 200) {//登陆失败
            Message.error(meta.msg)
            if (meta.status !== 5001 || meta.status !== 5002) {
                //token失效，过期之类的
                //清除token,跳转到登录页之类
            }
            return config
            // return Promise.reject(new Error('Error'))
        } else { //登录成功
            // Message.success(meta.msg)
            return config
        }
    },
    error => {
        return Promise.reject(error.response.status) // 返回接口返回的错误信息
    })

export default Http